home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / misc / AutoGuideCreat.lha / AutoGuideCreator / Italian_PROGRAMMERS.READM < prev   
Encoding:
Text File  |  1996-09-02  |  11.3 KB  |  218 lines

  1.  
  2.  
  3.  
  4.     AUTOGUIDE CREATOR
  5.  
  6.     SISTEMA DI SVILUPPO IN ASSEMBLER
  7.  
  8.  
  9. Dato che programmo sempre e solo in assembler (fin dal lontano C 64), ho
  10. trovato utile avere sempre disponibile la descrizione dei comandi e loro
  11. connessi delle librerie dell' amiga. Per fare questo era già presente un
  12. programma in PD in grado di ottenere (peraltro in maniera molto
  13. macchinosa) un file guide di riferimento e i relativi file guide per ogni
  14. libreria o device, ecc... Quest' ultimo programma non è però in grado di
  15. operare alcun controllo sulla sintassi, nè riusciva a creare dei file
  16. guide veramente perfetti per ciò che riguardava i collegamenti con gli
  17. altri file e/o con le descrizioni delle strutture; per non dimenticare la
  18. impossibilità di generare un indice delle macro presenti nei file .i degli
  19. include.Inoltre poteva solo controllare i file .h degli include (utili
  20. solo per i programmatori in C). Il programma che ho sviluppato è in grado
  21. di leggere sia gli include di tipo .h che quelli di tipo .i (quindi di
  22. creare dei file guide per entrambi i tipi di programmatori), leggere gli
  23. autodoc, controllarne l'esatta sintassi, stabilire un ordine alfabetico di
  24. tutte le varie funzioni e strutture (sia nell' indice generale che in
  25. quello particolare di ogni singolo file guide - indipendentemente dall'
  26. ordine in cui essi sono stati scritti), ed infine creare sia i singoli
  27. file guide da ogni autodoc, sia un  file indice generale (TOC) nel quale
  28. sono anche riuniti un indice per funzioni, strutture e macro (quest'ultime
  29. solo nel caso si scelga il linguaggio assembler).
  30.  
  31.     SVILUPPO INIZIALE DEL PROGRAMMA
  32.  
  33. Il primo programma da me creato non aveva un interfaccia intuition, ed
  34. esso è costituito dalla parte 'AUTOGUIDE.INT' che viene inclusa nel
  35. programma principale.
  36.  
  37.      All'inizio esso parte dalla elaborazione dei file presenti in una
  38.     directory già prefissata nel programma
  39.     Da essa vengono prelevati i file doc, che subiscono dapprima il
  40.     controllo sintassi    (vedi la parte stx_ctr del programma)
  41.     -  i  file  nei  quali  siano  presenti  gli  errori  vengono  memorizzati
  42.     (e così anche il tipo di errore) per essere poi elencati nel file ERROR ed
  43.     anche nella  finestra di controllo del programma.
  44.            Vengono quindi controllate le funzioni descritte in quel
  45.            determinato file doc e memorizzate secondo il nome ed il file
  46.            di appartenenza (serviranno poi come indice delle funzioni per
  47.            la costruzione del cross-link tra i varii file).
  48.             
  49.  In seguito vengono controllati i file include per la presenza delle
  50.  strutture e delle macro e la loro posizione nei relativi file viene memorizzata, per essere poi inclusa
  51.  nella descrizione dei file guide.
  52.  Come per i file doc, si creerà quindi un indice delle strutture per i
  53.  successivi cross-link.
  54.  
  55. Inoltre si creerà un indice dei tipi di file doc (device, library,
  56. datatype ecc...), utile nella stesura ordinata del file TOC principale.
  57.  
  58. Tutti gli indici creati si basano su strutture da me appositamente create
  59. per l' ordinamento degli stessi (questo facilita in seguito la
  60. elaborazione dei file guide).
  61.  
  62. Fatto questo si procede alla elaborazione dei file doc (tranne nel caso in
  63. cui vi siano errori, per cui il programma potrebbe andare in crash, a
  64. causa del superamento in fase di ricerca delle varie funzioni e strutture)
  65. Tale elaborazione tiene conto di varie strutture presenti nei file doc:
  66.  
  67.     -    caratteri FF (a capo)    indici di termine descrizione lista
  68.     funzioni o della singola funzione o di tutto il file ( ciò serve
  69.     anche come riferimento nella trascrizione del file guide a partire
  70.     dal doc originale, per impegnare meno memoria nella elaborazione)
  71.     
  72.     -    PAROLE IN GRASSETTO        individua    le parole da scrivere in
  73.     grassetto (non presente in altri programmi precedenti)
  74.     
  75.     -    STRUTTURE                individua le strutture da linkare nel
  76.         file doc
  77.     
  78.     
  79.     -    FILE INCLUDE            individua la presenza di un riferimento
  80.     ad un file include (sua descrizione). Per ora questo riferimento
  81.     viene solo individuato ma non si controlla se quel file è presente
  82.     nella directory indicata, sarà uno sviluppo futuro.
  83.     
  84.     -    FUNZIONI                individua le funzioni da linkare
  85.     associando sia quelle del file in esame sia quelle presenti negli
  86.     altri file doc, escludendo la eventuale ripetizione della stessa
  87.     funzione che si sta descrivendo (è inutile creare un tasto di
  88.     associazione per la stessa funzione che si sta esminando !! - modo
  89.     non presente in altri programmi precedenti )
  90.  
  91. In questo modo si crea un indice di riferimento per la costruzione del
  92. file guide, che avviene in seguito, dopo avere ordinato in sequenza tutti
  93. i riferimenti ottenuti dalla precedente ricerca. Ciò avviene per tutti i
  94. file doc presenti nella directory prescelta, quindi si procede alla
  95. costruzione del file TOC, indice generale di tutti i file guide ottenuti
  96. ed anche indice analitico di tutte le funzioni, strutture (e macro nel
  97. caso del linguaggio assembler - opzione quest'ultima presente solo in
  98. questo programma !!).
  99.  
  100. Per fare tutto ciò ho utilizzato in maniera continuativa il comando
  101. ParsePattern (perdendo un mucchio di tempo per trovare l' esatta
  102. definizione delle parole chiave, soprattutto per le funzioni, la cui
  103. parola chiave è sempre il riferimento "()" al termine della parola stessa
  104. - vedasi la definizione della parola Sstruct ed Sfunct nel file
  105. AUTOGUIDE.INT-)
  106.     
  107. Il programma aveva però il limite di definire sia la directory dei file
  108. doc sia quella dei file include senza possibilità di scelta. Ho quindi
  109. pensato alla interfaccia intuition, la cui costruzione è affidata al
  110. programma AUTOGUIDE.S, che poi è il programma di partenza per
  111. l'assemblaggio finale:
  112.  
  113. Per l'intuition ho fatto uso della libreria Gadtools e della funzione
  114. CreateGadget (pertanto il programma non può funzionare al di sotto della
  115. versione 37-38 del SO) Tutti i gadget vengono creati PRIMA di aprire la
  116. finestra (anche quelli riguardanti la finestra OPZIONI) Tramite questi è
  117. possibile la scelta (mediante la libreria ASL) delle varie directory: in
  118. questo modo è possibile evitare l'uso delle assegnazioni ai path di
  119. appartenenza dei file include    (impossibile ad altri programma analoghi
  120. precedenti !), che viene automaticamente inclusa nei file guide elaborati.
  121.  
  122. Un altra caratteristica del programma (per le versioni di Amigaguide >38)
  123. è la possibilità di utilizzare i vari tipi di scrittura (nello specifico
  124. in grassetto - non presente in altri programmi analoghi), per la quale ho
  125. pensato alla possibilità di scelta delle parole da trascrivere in un
  126. determinato modo; a questo punto, ed anche per scegliere le funzioni da
  127. evitare (perchè analoghe ad altre presenti in file guide diversi), ho
  128. creato il tasto OPZIONI che apre un nuova finestra con 2 listview che
  129. permettono la scelta ed il cambiamento in maniera rapida di tali
  130. parametri. Questi parametri vengono poi descritti nel file ASCII
  131. AUTOGUIDE.PREFS che può essere variato (vedi il file autoguide.doc) anche
  132. prima della esecuzione del programma per variare tali parametri.
  133.  
  134.  
  135. Infine il programma crea il file binario (NOME TOC).XREF che è un indice
  136. delle funzioni e relativi file guide, delle parole in grassetto, delle
  137. funzioni da evitare, del nome del file TOC e del tipo di linguaggio usato
  138. e la directory di riferimento dei file include, che servirà per un
  139. eventuale aggiornamento del file TOC con nuovi autodoc (o aggiornamento di
  140. vecchi autodoc già presenti).
  141.  
  142. La funzione ADD AUTODOC è stata più complessa da definire: essa non solo
  143. permette di aggiungere nuovi file a quelli già presenti (e li riordina
  144. anche nel file TOC), ma anche di cambiare quelli già presenti (con
  145. eventuali aggiornamenti); questo avviene sempre a scelta da parte
  146. dell'utente grazie ad un requester che appare sempre per richiedere
  147. conferma al cambiamento. Inoltre il cambiamento impone la esclusione delle
  148. vecchie funzioni dal file .XREF e la sua ritrascrizione, questa è una
  149. delle parti più complesse del programma, poichè comprende tali variazioni
  150. in qualsiasi parte del file esse si trovino. Sicuramente l'avere ordinato
  151. tutti gli indici usati mediante l'uso di STRUTTURE create ex-novo, mi ha
  152. molto facilitato in tutto questo.
  153.  
  154. Al termine della funzione New Guide il programma richiede (ricercandola
  155. nella dir > envarc/sys), un icona da assegnare al file TOC. Se questo non
  156. avviene, non accade nulla, solo non si assegna nessun icona al file (però
  157. questo determina la necessità di visualizzare tutti i file della directory
  158. dei file guide !!) Tale funzione non avviene nel caso dell' ADD AUTODOC,
  159. in quanto qui è sufficente cambiare il solo file TOC e non la sua icona.
  160.  
  161. Tra le varie funzioni del programma vi è la capacità di creare un cassetto
  162. per la directory dei file guide (ed assegnarvi automaticamente un icona di
  163. tale tipo), che può essere scelto dall' utente. Ed infine la capacità
  164. (solo nelle versioni 3.0 ed oltre del SO), di iconificare la finestra
  165. principale del programma (sulla quale però appare ancora la descrizione
  166. della funzione svolta in quel momento), per intenderci alla maniera di
  167. Directory Opus.
  168.  
  169. Una volta compilato (da devpac in modo eseguibile) il programma occupa
  170. poco più di 30 Kbyte (in maniera blink supera i 65 Kb), però è ingrado di
  171. manipolare file di qualsiasi lunghezza ed un numero infinito di autodoc da
  172. elaborare (tutto è limitato dalla quantità di memoria disponibile, però
  173. funziona egregiamente anche con solo 1 Mbyte).
  174.  
  175. Ho potuto elaborare in questo modo tutti i file autodoc presenti nel
  176. devkit 3.1 (in circa 25 minuti con accelleratrice 68030 e 8 Mbyte sul mio
  177. A 1200, contro le ore necessarie nella stessa configurazione da parte del
  178. programma AD2HT !), ed in seguito aggiungerne altri 3 trovati per altre
  179. librerie presenti nel PD.
  180.  
  181. Il Multitasking viene mantenuto lo stesso, ho avuto solo qualche problema
  182. con Direcory Opus 4 (non con il 5.11 !!). Nel caso la directory per i file
  183. guide venga creata ex-novo, essa non sarà disponibile fino al termine
  184. della esecuzione del programma (questo invece non accade se viene usata un
  185. dir già presente).
  186.  
  187. La parte più complessa della elaborazione è stata sicuramente la ricerca
  188. della definizione delle parole chiave per la ricerca delle funzioni
  189. (questo ha mandato in crash a volte l'intero programma, a causa dello
  190. sconfinamento oltre la memoria disponibile della funzione ParsePattern,
  191. che, devo ammettere, è estremamente potente ed affidabile. La maggior
  192. parte del tempo perso dal programma è proprio quella riguardante tale
  193. funzione, perciò essa stessa è stata riscritta più volte, fino a farla
  194. divenire una subroutine utile per tutte le ricerche di tutte le paorle
  195. chiave.
  196.  
  197. Il sistema delle subroutine è sicuramente meno leggibile dal
  198. programmatore, ma è quella che assicura più risparmio di memoria e di
  199. tempo di esecuzione, perciò l'ho sfruttata a fondo. Ho cercato in questo
  200. modo di ottimizzare al massimo il programma, usando le stesse subroutine
  201. per diverse parti del programma stesso.
  202.  
  203. Nell'ultima versione ho aggiunto la localizzazione, mediante la quale è
  204. possibile cambiare le intestazioni degli ASL e dei gadget (la versione
  205. originale è comunque italiana). Il file catalog può essere variato tramite
  206. altri programmi PD.
  207.  
  208.  
  209.  
  210.  
  211. Questo programma mi ha permesso di capire meglio la costruzione dei gadget
  212. e delle finestre, ed inoltre dei metodi di sorting (tratti da un metodo di
  213. sorting originale in basic, veramente efficace !!).
  214.  
  215. NB:    una volta iniziata l'elaborazione, non è più possibile fermarla,
  216. perciò attenzione, perchè il multitasking viene molto limitato dall'uso
  217. intensivo della funzione ParsePattern, che lo rallenta notevolmente.
  218. Personalmente ho elaborato tutti i file autodoc nella pausa del pranzo